package cn.jingyuan.owl.utils.core.io.resource;

import cn.jingyuan.owl.utils.core.StringUtils;
import cn.jingyuan.owl.utils.core.URLUtils;
import cn.jingyuan.owl.utils.core.io.FileUtils;

import java.io.File;
import java.nio.file.Path;

/**
 * 文件资源访问对象
 */
public class FileResource extends UrlResource {

    /**
     * 构造
     *
     * @param path 文件
     */
    public FileResource(Path path) {
        this(path.toFile());
    }

    /**
     * 构造
     *
     * @param file 文件
     */
    public FileResource(File file) {
        this(file, file.getName());
    }

    /**
     * 构造
     *
     * @param file 文件
     * @param fileName 文件名，如果为 null 获取文件本身的文件名
     */
    public FileResource(File file, String fileName) {
        super(URLUtils.getURL(file), StringUtils.isBlank(fileName) ? file.getName() : fileName);
    }

    /**
     * 构造
     *
     * @param path 文件绝对路径或相对 ClassPath 路径，但是这个路径不能指向一个 jar 包中的文件
     */
    public FileResource(String path) {
        this(FileUtils.file(path));
    }

}
